package com.sbio.udiapp.util;

import java.lang.reflect.Method;
import java.util.Objects;

public class CommonUtil {

    /**
     * 判断一个编码是否是箱码
     * @param pbNo
     * @return
     */
    public static boolean isPack(String pbNo) {
        if (Objects.isNull(pbNo)) {
            return false;
        }
        return pbNo.startsWith("XM");
    }


    /**
     * 判断一个编码是否是udi
     * @param pbNo
     * @return
     */
    public static boolean isUdi(String pbNo) {
        if (Objects.isNull(pbNo)) {
            return false;
        }
        return pbNo.startsWith("01");
    }
    /**
     * 判断一个编码是否是SS码
     * @param pbNo
     * @return
     */
    public static boolean isSSNo(String pbNo) {
        if (Objects.isNull(pbNo)) {
            return false;
        }
        return pbNo.startsWith("SS");
    }


    /**
     * 判断一个编码是否是udi或者箱码
     * @param pbNo
     * @return
     */
    public static boolean isPbNo(String pbNo) {
        return isPack(pbNo) || isUdi(pbNo) || isSSNo(pbNo);
    }

    public static Method getCurrentMethod() {
        // 获取当前线程的方法调用栈信息
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        // 下标为2的元素为当前方法调用的信息
        String currentClassName = stackTrace[4].getClassName();
        String currentMethodName = stackTrace[4].getMethodName();

        try {
            // 根据类名和方法名反射获取 Method 对象
            Class<?> currentClass = Class.forName(currentClassName);
            Method[] methods = currentClass.getDeclaredMethods();
            for (Method method : methods) {
                if (method.getName().equals(currentMethodName)) {
                    return method;
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        return null;
    }
}
